Недавно (20 июня 2019 года) на Cryptology ePrint Archive была опубликована статья "SoK of Used Cryptography in Blockchain". Данный пост - семнадцатый в запланированной серии, содержащей любительский перевод этой статьи.
Систематизация знаний по используемой криптографии в блокчейне
(перевод с английского
статьи
Mayank Raikwar, Danilo Gligoroski and Katina Kralevska
SoK of Used Cryptography in Blockchain
Cryptology ePrint Archive, Report 2019/735
https://eprint.iacr.org/2019/735)
Аннотация
(перевод аннотации здесь)
1 Введение (перевод введения здесь)
1.1 Наш вклад (перевод здесь)
2 Методология исследования (перевод здесь)
3 Основные понятия блокчейна
3.1 Криптографическая хэш-функция (перевод здесь)
3.2 Механизмы консенсуса (перевод здесь)
3.3 Сетевая инфраструктура (перевод здесь)
3.4 Типы блокчейна (перевод здесь)
4 Проблемы в блокчейн
4.1 Безопасность и приватность (перевод здесь)
4.2 Проблемы масштабируемости (перевод здесь)
4.3 Форкинг (перевод здесь)
4.4 Производительность (перевод здесь)
4.5 Энергопотребление (перевод здесь)
4.6 Инфраструктурные зависимости (перевод здесь)
5. Обзор используемых криптографических понятий в блокчейне
5.1 Схема подписи (перевод здесь)
5.2 Доказательства с нулевым разглашением
В доказательствах с нулевым разглашением [139] участвуют две стороны, доказывающая и проверяющая. Во-первых, доказывающий утверждает некоторое утверждение и доказывает его достоверность проверяющему, не раскрывая никакой другой информации, кроме самого утверждения. Таким образом, доказательство с нулевым разглашением подтверждает утверждение о том, что «передача актива действительна», ничего не раскрывая об активе. Протоколы с нулевым разглашением — чрезвычайно полезные криптографические протоколы для обеспечения секретности в приложениях. Их можно использовать для обеспечения конфиденциальности актива (транзакционных данных) в блокчейне при сохранении актива в блокчейне. Некоторые общедоступные блокчейны используют доказательства с нулевым разглашением, такие как Zerocoin [124] или Zerocash [57], для транзакций, которые невозможно отследить или связать. Zerocoin — это децентрализованная микс и расширение Bitcoin для обеспечения анонимности и невозможности привязки транзакций за счет применения доказательств с нулевым разглашением. В протоколе Zerocoin пользователь, у которого есть биткойны, может генерировать равную стоимость Zerocoin-ов без необходимости использования какого-либо стороннего набора для микширования. Пользователь может потратить свой биткойн: 1) создав безопасное обязательство (т.е., Zerocoin), 2) записав его в блокчейне и 3) транслировав транзакцию и доказательство с нулевым разглашением для соответствующего Zerocoin. Следовательно, другие пользователи могут проверить Zerocoin, записанный в блокчейне, и проверить транзакцию вместе с доказательством. Здесь доказательство с нулевым разглашением защищает привязку Zerocoin к пользователю, однако протокол Zerocoin является дорогостоящим из-за его высокой сложности и большого размера доказательства.
Чтобы уменьшить сложность и размер доказательства, протокол Zerocash использует вариант доказательства с нулевым разглашением, известный как краткий неинтерактивный аргумент знания с нулевым разглашением (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (zk-SNARK)) [140]. zk-SNARK скрывает информацию о сумме и адресе получателя в транзакции. Основная идея zk-SNARK заключается в том, что «любое вычислительное условие может быть представлено арифметической схемой, которая принимает некоторые данные в качестве входных данных и выдает в ответ истину или ложь». zk-SNARK уменьшает размер доказательства и вычислительные затраты по сравнению с базовыми доказательствами с нулевым разглашением. Ориентированная на предприятия версия Ethereum, блокчейн-платформа Quorum [141], также использует zk-SNARK для конфиденциальности и анонимности транзакций. Рисунок 7 иллюстрирует интерактивный протокол с нулевым разглашением, когда у доказывающего есть утверждение, и он/она хочет доказать, что утверждение верно, не раскрывая никакой информации, связанной с утверждением. В интерактивном протоколе проверяющий задает множество вопросов, связанных с утверждением, а доказывающий отвечает на эти вопросы таким образом, что доказывающий подтверждает утверждение и не раскрывает никакой необходимой информации.
Рисунок 7: Интерактивный протокол с нулевым разглашением.