Недавно (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. Обзор используемых криптографических понятий в блокчейне
С криптографической точки зрения, многие из криптографических методов уже были продемонстрированы и активно использовались на различных блокчейн-платформах и в сценариях использования блокчейна [17]. Поскольку спектр криптографических понятий огромен, всегда есть возможность разыскать некоторые из существующих криптографических схем и использовать их в сервисах блокчейна.
В таблице 5 мы даем исчерпывающую сводку всех криптографических понятий, которые мы рассмотрим в этом и следующем разделах. Она служит удобным обзором и быстрой справочной таблицей для нашей систематизации криптографических знаний, используемых в блокчейне.
Ниже приведены некоторые из криптографических понятий, которые уже были хорошо проанализированы и реализованы в блокчейне.
Криптографическое понятие |
Свойства |
Реализация (ссылка) |
Контроль доступа |
Приватность данных |
|
Аккумулятор |
Обеспечивает доказательство принадлежности, анонимность |
Методы пакетной обработки для аккумуляторов в блокчейне [94] |
Множественная (коллективная) подпись |
Быстрая проверка подписи |
Протестировано в Bitcoin [95]
|
Схема обязательства |
Неотказуемость |
Использовано в Bullteproof [96] и в Monero [58,65] |
Децентрализованная авторизация
|
Приватность данных |
|
Схема шифрования |
Конфиденциальность и анонимность |
Kadena [99], Hyperledger Fabric [62], Tendermint [36] |
Шифрование на основе идентификации |
Нет инфраструктуры распределения открытых ключей |
|
Инкрементная криптография |
Повышение эффективности |
Kadena [99] |
Низкоресурсная (легковесная) криптография |
Быстрая, с меньшим потреблением памяти/энергии |
|
Обфускация |
Приватность |
Протестировано в Bitcoin [104] |
Забывчивая оперативная память |
Конфиденциальность и целостность |
|
Забывчивая передача |
Приватность данных |
|
Постквантовая криптография |
Квантовая устойчивость |
|
Протокол доступа к данным без раскрытия запроса |
Приватность данных |
Частные запросы блокчейна на основе протоколов доступа к данным без раскрыти запроса [86] |
Доказательство возможности восстановления |
Восстановление облачных данных |
|
Разделение секрета |
Приватность данных |
|
Безопасные многосторонние вычисления |
Приватность пиров и смарт-контракт |
|
Схемы подписи |
Целостность и аутентификация |
В каждом блокчейне, например, Multichain [64], CryptoNote [119] |
Верифицируемая функция задержки |
Меньше параллелизма, быстрая верификация |
Chia [120] |
Верифицируемая случайная функция |
Верифицируемый псевдослучайный выход |
|
White-Box криптография |
Приватность данных |
Самозащита во время выполнения в Blockchain Ledger [123] |
Доказательство с нулевым разглашением |
Приватность пользователей и данных |
Таблица 5: Сводка криптографических понятий в блокчейне.
5.1 Схема подписи
Стандартная цифровая подпись — это математическая схема, основанная на криптографии с открытым ключом, которая направлена на создание коротких кодов, называемых подписями цифровых сообщений, с использованием закрытого ключа, и где эти подписи проверяются с помощью соответствующего открытого ключа. В этом контексте цифровые подписи защищают от фальсификации и подделки цифровых сообщений.
Схема подписи используется в блокчейне для подписания транзакции, следовательно, для аутентификации предполагаемого отправителя и обеспечения целостности транзакции, а также неотказуемости отправителя. Многие из схем подписи широко используются для обеспечения целостности и анонимности в блокчейне. Цифровая подпись — один из наиболее важных криптографических примитивов, который делает блокчейн публично проверяемым и с достижимым консенсусом. Схемы подписи используются почти в каждом блокчейне. На рисунке 5 представлен общий пример того, как пользователь блокчейна (подписывающий) создает транзакцию или блок с цифровой подписью, используя свой закрытый ключ.
Рисунок 5: Процесс подписания транзакции/блока блокчейна
Кроме того, на рисунке 6 показано, как другие узлы блокчейна (проверяющие) проверяют, является ли подпись в транзакции или блоке действительной или нет, используя открытый ключ подписавшего.
Рисунок 6: Проверка транзакции/блока с цифровой подписью
Блокчейн применяет различные схемы подписи для обеспечения дополнительных функций, таких как приватность, анонимность и невозможность установления связи. Схема подписи также может применяться для создания подписи постоянного размера с использованием агрегации подписей. Подписи Шнорра — это форма агрегации подписей, которая используется в биткойнах вместо P2SH [125] для масштабируемости [126]. Вот некоторые из схем подписи, применяемых в блокчейне:
1. Мультиподпись. В схеме мультиподписи группа пользователей подписывает одно сообщение. В сети блокчейн, когда транзакция требует подписи группы участников, может быть выгодно использовать схему с несколькими подписями. Блокчейн-платформы, такие как Openchain [127] и MultiChain [64], поддерживают схему мультиподписи M из N, которая снижает риск кражи, допуская компрометацию до M-1 криптографических ключей. Boneh и др. также разработал компактные мультиподписи для небольших блокчейнов [128].
2. Слепая подпись: в этой схеме [129] подписи используются в протоколах, связанных с приватностью, где подписывающая сторона и авторы сообщения (транзакция в случае блокчейна) являются разными сторонами. Слепые подписи используются для обеспечения несвязываемости и анонимности транзакции. В настройке блокчейна слепая подпись может быть полезна для обеспечения анонимности и невозможности установления связи, когда сторона транзакции и сторона подписи различны. Слепые подписи использовались в распределенной сети микширования BlindCoin [130] для обеспечения несвязываемости транзакций. Слепые подписи также тестируются в биткойнах, чтобы обеспечить анонимность Bitcoin on-chain и off-chain транзакций [131].
3. Кольцевая подпись: в этой схеме [132] используется протокол, в котором подпись создается для сообщения любым членом группы от имени группы c сохранением личности отдельного лица, подписавшего подпись. Кольцевые подписи используются для обеспечения анонимности подписывающей стороны в сети блокчейн. Технология CryptoNote [119] использует схему кольцевой подписи для создания неотслеживаемых платежей в криптовалютах. Платформа микширования без доверия [133] также использует кольцевую подпись для анонимности.
4. Пороговая подпись: эта схема подписи представляет собой (t; n) пороговую подпись, при которой n сторон получают часть секретного ключа для создания подписи, и t из n сторон создают подпись над любым сообщением. Поскольку стороны напрямую строят подпись из долей, ключ никогда не раскрывается во всей схеме. Пороговая подпись может быть полезна для обеспечения анонимности в сети блокчейн. CoinParty [134] использует пороговую схему подписи для многостороннего микширования биткойнов. Недавняя работа о миксере монет, ShareLock [135], использует пороговый ECDSA (алгоритм цифровой подписи на эллиптических кривых [136]), чтобы обеспечить решение, повышающее приватность для криптовалют. Однако пороговые подписи ECDSA сложны из-за сложностей алгоритма подписи. Другие схемы подписи, такие как EdDSA (алгоритм цифровой подписи на основе кривой Эдвардса [137]), использующий кривую Эдвардса25519, являются эффективными пороговыми подписями. Блокчейн Libra [43] применяет этот EdDSA во время генерации нового адреса аккаунта.
В то время как цифровые подписи, созданные с помощью ключей, используемых в инфраструктуре открытых ключей (PKI), хорошо регулируются законом и могут использоваться в различных типах юридических споров, достижение аналогичных правил для всех типов цифровых подписей, используемых в существующих блокчейн решениях, представляет собой серьезную проблему. Кроме того, в физическом мире, если актив украден (например, дорогая машина или дорогие часы), его можно отследить до его законного владельца.
Исследовательская проблема 9. Разработать протоколы безопасности, объединяющие существующие стандартизированные и узаконенные системы PKI с некоторыми из разработанных систем блокчейна.
Исследовательская проблема 10. Разработать блокчейн-систему для защиты от краж, т. е. систему, гарантирующую возврат украденных активов их законным владельцам.
Что касается Исследовательской проблемы 10, недавно было повторно запущено предложение Хранилища. Его цель — защитить биткойн-кошелек от кражи без необходимости хард-форка [138]. Однако для других систем блокчейна такого предложения или решения не существует.