Недавно (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 Доказательства с нулевым разглашением (перевод здесь)
5.3 Контроль доступа (перевод здесь)
5.4 Схема шифрования (перевод здесь)
5.5 Безопасные многосторонние вычисления (перевод здесь)
5.6 Разделение секрета (перевод здесь)
5.7 Схема обязательств (перевод здесь)
5.8 Аккумулятор
Аккумулятор — это односторонняя функция, которая дает доказательство принадлежности, не раскрывая индивидуальную идентичность в основном множестве. Это можно использовать в блокчейне для создания других криптографических примитивов, таких как обязательства, кольцевые подписи и доказательства с нулевым разглашением. Дерево Меркла, используемое во многих криптовалютах, относится к более широкому классу криптографических аккумуляторов, который представляет собой структуру данных, эффективную с точки зрения пространства и времени, для проверки на принадлежность к множеству. На рис. 11 показано, как транзакции блокчейна представлены в дереве Меркла, а корень Меркла хранится в блочной структуре блокчейна. Аккумуляторы, не относящиеся к деревьям Меркла, классифицируются как аккумуляторы RSA и аккумуляторы эллиптических кривых.
Рисунок 11: Дерево Меркла транзакций блокчейна.
В Zerocoin [124] аккумулятор A вычисляется с помощью общих обязательств сети по монетам вместе с соответствующими свидетелями членства для каждого элемента в множестве. Свидетель w вычисляется по накопительным монетам, за исключением одной. Таким образом, во время транзакции траты Zerocoin пользователь подтверждает знание одной монеты, используя этого свидетеля. Этот свидетель w и аккумулятор A публично проверяются без какой-либо доверенной третьей стороны. Аккумулятор A в Zerocoin определяется как:
;
где целые числа А, u и N известны всем. Монета c представляет собой обязательство Педерсена с серийным номером монеты s и случайным числом z. Zerocoin использует генератор случайных чисел (RNG) для генерации различных s и z, чтобы найти c с использованием обязательства Педерсена, пока c не станет простым. Свидетель w монеты c определяется как накопление всех монет, кроме c:
.
Аккумуляторы также можно использовать для проверки диапазона в блокчейне. Аккумуляторы используются в [94] для разработки блокчейна без сохранения состояния, где для участия в консенсусе узлу требуется только постоянный объем хранилища.