Систематизация знаний по используемой криптографии в блокчейне. Обзор используемых криптографических понятий в блокчейне. Обфускация.

Ruslan Ospanov 18 December 2022 Применение application, алгоритм, криптография, алгоритмы, применение, блокчейн, blockchain, cryptocurrencies, cryptography, криптовалюты, криптографические протоколы 338

Недавно (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 Аккумулятор (перевод здесь)

5.9 Забывчивая передача (перевод здесь)

5.10 Забывчивая оперативная память (перевод здесь)

5.11 Доказательство возможности восстановления (POR) (перевод здесь)

5.12 Постквантовая криптография (перевод здесь)

5.13 Низкоресурсная (легковесная) криптография (перевод здесь)

5.14 Верифицируемая случайная функция (VRF) (перевод здесь)

5.15 Обфускация

Обфускация — это способ преобразования программы P в «Black-box»-эквивалент программы Q = O(P), так что P и Q дают одинаковый результат при одинаковых входных данных. Должно быть трудно обнаружить внутреннюю логику или структуру программы после ее обфускации. Обфускация направлена на то, чтобы затруднить обратный инжиниринг, делая программу неразборчивой, сохраняя при этом ее функциональность. Найти идеальную black-box обфускацию математически невозможно. В соответствии с этим более слабое решение состоит в том, чтобы найти «обфускацию неразличимости», чтобы нельзя было определить, является ли сгенерированный вывод исходной программой или обфусцированной программой. Очень простой пример для понимания обфускации неразличимости следующий: существуют две эквивалентные программы P = x × (y + z) и P’ = x × y + x × z. Они обфусцированы так, что у нас есть O(P) и O’(P’). Будем говорить, что обфусцированные программы O и O’ неразличимы, если по полученному выводу o нельзя определить, какая из программ O, O’ дала этот вывод.

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

Рисунок 12: Пример обфускации смарт-контракта.

Одной из самых первых успешных попыток предложить очень ограниченный вариант обфускации в биткойне была стандартизация «Pay to script hash (P2SH) transactions» [125]. Количество биткойнов в транзакциях P2SH отправляется в хеш скрипта вместо хеша открытого ключа. Мы говорим, что это был ограниченный вариант обфускации, потому что для того, чтобы потратить биткойны, полученные через P2SH, получатель должен предоставить скрипт, который соответствует хешу скрипта. Тем не менее, успешное принятие транзакций P2SH без хард-форка Биткойна показало, что существует интерес к обфускации в блокчейне, и этот предмет является жизнеспособной областью исследований.

Было проведено исследование обфускации в биткойне [104], и оно может быть скомпилировано для других криптовалют и приложений блокчейна. Обфускация также используется в блокчейне для потребления электроэнергии [171], где шум добавляется к данным о потреблении электроэнергии пользователем посредством обфускации, а данные о потреблении электроэнергии делятся на случайные и неслучайные обфусцированные данные.

Как отмечено в [172], определение и характеристики некоторых языков определяют, насколько легко обфусцировать программы, написанные на этих языках. Например, C, C++, Java и Perl — это языки, предлагающие более простое обфусцирование программ. А как насчет языков сценариев, используемых в блокчейне? Переформулируем этот вопрос как исследовательскую задачу:

Исследовательская проблема 12. Изучите легкость/сложность обфусцирования программ, написанных на языках сценариев, используемых в текущих системах блокчейна. Изучите возможность применения некоторых из разработанных методов обфусцирования в C, C++, Java и Perl для языков сценариев блокчейна.

Related Post