Уязвимость в криптовалюте Zcash, позволявшая генерировать новые средства

Разработчики криптовалюты Zcash, занимающей 17 место по уровню капитализации (271 млн долларов) и обеспечивающей анонимность и конфиденциальность метаданных транзакций, раскрыли сведения о критической уязвимости (CVE-2019-7167), позволявшей без ограничений генерировать новые средства (создавать поддельные монеты через предъявление фальшивых доказательств проделанной работы). Несмотря на то, что проблема была выявлена в начале марта 2018 года и скрытно исправлена в октябре прошлого года, информация об уязвимости публично раскрыта только сейчас.

Сведения о наличии уязвимости до сих пор держалась в тайне — до недавних пор о проблеме знало только 4 человека: изначально выявивший проблему криптоаналитик, нанятый компанией Zcash Company, и три сотрудника компании Zcash Company (два криптографа и директор). Уязвимость вызвана недоработкой в алгоритме криптографического подтверждения платежей zk-SNARK, в котором используется метод доказательства с нулевым разглашением.

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

Сразу после обнаружения проблемы разработчики удалили опубликованный во время запуска проекта файл с расшифровкой протокола MPC (multi-party computation), который мог использоваться для вычисления параметров, необходимых для эксплуатации уязвимости. В качестве причины пропадания файла было указано его случайное удаление с сервера по недосмотру.

В октябре было предложено обновление zk-SNARK с реализацией новой системы подтверждения «Groth16«, в которой были заменены приводящие к проблеме параметры. Для перехода на новую версию протокола 28 октября было выполнено обновление всей сети Zcash под предлогом внесения изменений для значительного повышения эффективности обработки транзакций.
13 ноября проектам Horizen и Komodo, использующим технологии Zcash, было отправлено уведомление о наличии уязвимости, без раскрытия деталей, но с настоятельной рекомендацией перейти на использование алгоритма Groth16. Вскоре данные криптовалюты тоже выпустили обновление.

Отмечается, что в настоящее время пользователям Zcash ничего не угрожает, уязвимость три месяца назад устранена на уровне обновления сети и пользователям не нужно выполнять какие-либо действия для защиты. Маловероятно, что кто-то из злоумышленников смог независимо выявить уязвимость, так как проблема была достаточно изощрённой и обнаружить её могли только очень опытные эксперты в области криптографии (например, до этого проводилось несколько аудитов, которые не выявили проблем). Утверждается, что разработчики провели детальный анализ состояния блокчейна и не выявили следов использования уязвимости. Если бы средства были фиктивно сгенерированы в блокчейне обязательно бы остались следы, которые могли быть легко обнаружены.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.