После прочтения сжечь: Церемония релиза обновлений Zcash

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

Проблемное поле

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

К основным задачам можно отнести:

  • Децентрализованный обмен и хранение ценностей в недоверенной среде, без участия человека.

  • Заключение и соблюдение контрактов алгоритмическим (математическим) способом, без участия человека.

  • Анонимность в связи с двумя проблемами выше.

Эти задачи решаются с использованием следующих технологий:

  • Пиринговая сеть (децентрализация)
  • Цифровые подписи с использованием асинхронной криптографии (хранение ценностей)
  • Алгоритмы консенсуса (соблюдение контрактов)
  • Миксеры, доказательство с нулевым разглашением (анонимность)

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

  • Поддержка смарт-контрактов. Смарт-контракты позволяют выполнять некоторые договоренности одинаково для всех (отсутствие человеческого фактора).
  • Алгоритм консенсуса — то как подтверждается транзакция. Существуют такие варианты: Proof of Work, Proof of Stake, Proof of Authority, Proof of Space. Proof of Work в свою очередь распадается на разные хеш-функции, каждая со своим набором особенностей.
  • Протокол сетевого уровня (пиринговая сеть) — то как узлы блокчейн сети обмениваются информацией о транзакциях. Например, правила поиска и выбора пиринговых нод. Одни сетевые протоколы могут быть менее уязвимы для определенного рода атак чем другие.
  • Алгоритм верификации (цифровые подписи) — условия валидности транзакций.
  • Отношения с майнерами и ASIC-resistance. Если разработчики криптовалюты хотят помешать использованию ASIC-устройств, то для этого они обычно используют алгоритмы требовательные к памяти и плохо поддающиеся параллелизации. В отличие от SHA256, который используется в Bitcoin, например.

В соответствии со значением этих параметров, каждая валюта реализует какую-либо идею. Например, BTC — это аналог золота в цифровом мире. А ETH — платформа для выпуска частных денег и инвестирования.

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

Авторы Zcash, напротив, стремятся предоставить своим пользователям возможность проводить транзакции анонимно. И для этого применяют технологии, отличные от других блокчейнов. В частности, чтобы верифицировать транзакции, не раскрывая информации об адресатах и о суммах, применяется метод доказательства с нулевым разглашением (Zero-Knowledge Proof).

Monero, например, тоже пытается достичь анонимности, но использует для этого другую технологию: встроенный миксер, кольцевые подписи и промежуточные адреса. Подобные методы (миксеры транзакций) применяются и в сети Bitcoin, но в Monero это реализовано на уровне протокола и пользователям не надо беспокоиться об этом.

Итак, суть всего вышесказанного: Bitcoin и Ethereum не анонимны и задачи анонимизировать транзакции перед их разработчиками не стоит. Из этого вытекает то, какие технологии они используют для работы и как их реализуют. Zcash сфокусирован на анонимности и применяет для этого свой набор технологий. Следствием выбора такого подхода является процедура генерации ключей, ради которой и написана эта статья.

Церемония

Zcash использует заклятие математической магии zk-SNARKS (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) для шифрования транзакции таким образом, чтобы можно быть проверить её валидность, без раскрытия данных самой транзакции. То есть, верифицируя валидность транзакции, майнер не знает какие данные он верифицирует: ни адреса, ни сумму перевода!

Если вы сходу не можете представить как это работает, то добро пожаловать в наш клуб! Количество людей, которые понимают zk-SNARKs, и следовательно протокол Zcash, скорее всего настолько мало, что их всех (при необходимости) можно запереть в одной комнате.

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

Сгенерировать пару ключей — не проблема, но есть нюанс. Обладатель секретного ключа может эмитировать любое количество монет в блокчейне Zcash. И поскольку все транзакции зашифрованы, то отследить это событие по данным в блокчейне невозможно. (Для справки, в Bitcoin все события генерации монет публичны). Надеюсь, что последствия неконтролируемой эмиссии объяснять не надо.

Единственный выход из этой ситуации — гарантированное уничтожение приватного ключа (“the toxic waste” — токсичные отходы). И хотя уничтожить приватный ключ не сложно. Сделать это достоверно с точки зрения публики, как оказалось, является серьезным вызовом. Если у сообщества возникнут хотя бы малейшие подозрения, что приватный ключ сохранился, то криптовалюта может легко потерять доверие пользователей. Церемония уничтожения приватного ключа и есть центральная тема этой статьи.

«Ритуал» происходит следующим образом: Несколько человек из сообщества выполняют генерацию пары ключей, уничтожают приватный ключ и передают публичный ключ разработчикам. Публичные ключи всех участников соединяются вместе и используются как один. Значительно упрощает процедуру тот факт, что уничтожения хотя бы одного приватного ключа достаточно, чтобы сделать приватные ключи всех остальных участников церемонии бесполезными.

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

Фото: Морген Пек (Morgen Peck). За Вилкокс (Za Wilcox), брат CEO Zcash Зуко Вилкокса (Zooko Wilcox), уничтожает компьютер, который использовался для генерации параметров алгоритма. <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fspectrum.ieee.org%2Ftech-talk%2Fcomputing%2Fnetworks%2Fthe-crazy-security-behind-the-birth-of-zcash&postId=41745" rel="nofollow noopener" target="_blank">Источник</a>.
Фото: Морген Пек (Morgen Peck). За Вилкокс (Za Wilcox), брат CEO Zcash Зуко Вилкокса (Zooko Wilcox), уничтожает компьютер, который использовался для генерации параметров алгоритма. Источник.

Каждый участник выполняет церемонию немного по-своему и делает это в разных частях США. Список участников церемонии должен быть случайным, а люди не знакомы друг с другом, чтобы исключить сговор. Смысл в том, чтобы хотя бы один из этих людей гарантировано уничтожил приватный ключ. В этом случае вся процедура будет считаться успешной.

История церемонии

Первая церемония была проведена 21 октября 2016 года. В ней приняли участие 6 человек. Четверо из них опубликовали отчеты или стримы о своем участии.

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

Питер ван Валкенбург (Peter Van Valkenburgh) опубликовал свой отчет на Гитхабе. В отчете можно найти ссылку на тайм-лапс всего процесса, а также ссылку на папку в Google Drive со всеми оригинальными фото и видео материалами.

Вторая церемония состоялась в апреле 2018 года в связи с выходом хардфорка, оптимизирующего работу с закрытыми транзакциями. На этот раз астрологи объявили неделю анонимности и количество участников возросло аж до 88 человек! Казалось бы, светлое цифровое децентрализованное будущее приближается семимильными шагами, но не спешите с выводами...

Для начала маленькое, но поистине лирическое отступление. В Zcash есть 2 типа транзакций: открытые — точь в точь как в Bitcoin, и закрытые, которые содержат зашифрованные адреса и сумму, но при этом можно проверить их валидность. До хардфорка 96% всех транзакций были открытыми, потому что процедура генерации закрытых транзакций требовала относительно много времени при запуске на среднестатистическом компьютере. Форк был направлен на то, чтобы оптимизировать данную процедуру (в результате оптимизации эффективность повысилась примерно в 50 раз) с целью мотивировать пользователей чаще использовать функционал закрытых транзакций. А теперь спросите себя, какой процент пользователей (да и читателей этой статьи) знал о том, что их транзакции в «по-настоящему анонимном блокчейне» по-умолчанию открыты?

Через некоторое время после участия в первой церемонии и публикации своего отчета Питер Тодд назвал церемонию бессмысленной, потому как само ПО для генерации пары ключей не проверено на наличие уязвимостей генератора случайных чисел.

Для тех кто прогуливал лекции по эллиптической криптографии в школе, поясняем: если при генерации ключей использован «не достаточно случайный» (или слишком псевдо-случайный) генератор случайных чисел и злоумышленник знает особенности этой «неслучайности», то взлом ключей шифрования сильно упрощается. Угроза вполне реальна: Эдвард Сноуден упоминал, что АНБ поместили бэкдор в один из алгоритмов генерации псевдо-случайных чисел.

Но даже если бы ПО прошло проверку, по той же самой причине следовало бы проверить компилятор, который собирал его из исходного кода. А затем и процессор, на котором проводились вычисления. Думаете это все шутки или паранойя? В Гугле, например, не смеются.

На этом плохие новости не заканчиваются: пока мы готовили статью, Bitmain объявил (простите мой немецкий) о выпуске Antminer Z9 Mini и что первые 8000 единиц оборудования уже отправлены заказчикам (если, конечно, их было больше одного). Новые чипы более чем в 10 раз энергоэффективнее ферм на видеокартах. В очередной раз Децентрализация проиграла Капиталу со счетом 0:1.

Заключение

Если вы все еще считаете, что криптовалюты безопасны и анонимны, прочитайте текст еще раз.

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

Спасибо за внимание! Задавайте вопросы в комментариях. Подписывайтесь на анонсы наших статей в Телеграмме.

33
10 комментариев

Зачем?! Зачем он пилит корпус?!
Вся суть блокчейна: "Это слишком сложно для вашего понимания, поэтому посмотрите как брат свата пилит корпус и уверуйте в безопасность."

1

Вообще-то в статье утверждается ровно обратное. А фотография просто для иллюстрации процесса. Фотки поджаренного горелкой ноута не нашлось.

Итак, суть всего вышесказанного: Bitcoin и Ethereum не анонимныА Ethereum еще и не децентрализованный.

Смотря что вы вкладываете в это. Вообще-то никаких паспортных и иных данных там ваших нет, но вот транзакции отследить - да, возможно.