Метод сокрытия приватных данных для блокчейн-системы проведения тендеров
Предложен новый метод, позволяющий решить проблему приватности информации в открытых блокчейн-системах с использованием криптографического протокола доказательства с нулевым разглашением zk-SNARK. Метод реализован в виде криптографической схемы на основе библиотеки libsnark и интегрирован в модифицированный Ethereum С++ клиент.
Method for hiding private data in the block-chain tender system.pdf На сегодняшний день большинство конкурсных закупок и электронных торгов проводятся через специализированные информационные системы. В таких системах участники должны быть уверены в том, что никто не имеет возможности нарушить правила проведения тендера или получить доступ к конфиденциальной информации. Решить проблему доверия при проведении тендеров позволяет блокчейн. Однако при использовании этой технологии все данные сохраняются в открытом виде и доступны всем участникам. В случае с тендерами открытость информации нарушает тайну заявок, которая должна быть сохранена до окончания этапа запроса предложений. Ранее была разработана блокчейн-система для проведения тендеров с шифрованием заявок [1]. Однако такой подход не позволяет проверить корректность зашифрованной заявки в момент её подачи. Ещё одним недостатком является то, что все участники могут наблюдать факт подачи заявки пользователем. В данной работе предложена и реализована система тендеров, которая удовлетворяет критериям безопасности, открытости и конфиденциальности. Вопрос доверия решён с помощью технологии блокчейн, а сокрытие приватной информации - с помощью криптографического протокола неинтерактивного доказательства знания с нулевым разглашением zk-SNARK [2]. Система основана на платформе Ethereum. Вся ключевая информация о тендерах сохраняется в блокчейне, а проверка правил и отслеживание выполнения условий участниками реализованы в виде кода смарт-контрактов. Для реализации алгоритма сокрытия информации о заявках в Ethereum C+-+ клиент добавлен отдельный модуль tenderzkp. Он построен на базе протокола zk-SNARK с предобработкой для NP-полного языка системы ограничений ранга 1. Протокол использует эллиптическую кривую Баррето - Наерига. Реализация криптографической схемы предоставлена библиотекой libsnark [3]. В модуле tenderzkp реализованы функции создания и верификации доказательства о корректности заявки. Доказательство строится на основе ограничений на приватные и открытые входные данные заявки, выраженных с помощью базовых схем библиотеки libsnark. Для работы с добавленной криптографической схемой в Ethereum C++ клиент созданы новые предкомпилированные контракты с адресами 0x00... 09 и 0x00... 0a и разработана Solidity-библиотека, которая инкапсулирует низкоуровневое взаимодействие с предкомпилированными контрактами и предоставляет интерфейс для работы с ними в виде Solidity-функций. Чтобы добавить возможность вызывать методы разработанной криптографической схемы из сторонних приложений, расширен JSON-RPC API Ethereum клиента. Предложенный метод может быть использован не только для тендеров, но и в других системах, где есть необходимость скрывать часть информации в открытой блокчейн-сети. Он расширяет область применения технологии блокчейн в промышленных программных комплексах.
Ключевые слова
тендеры,
распределённые системы,
блокчейн,
доказательство с нулевым разглашением,
zk-SNARK,
платформа Ethereum,
tenders,
distributed systems,
blockchain,
zero-knowledge proof,
zk-SNARK,
Ethereum platformАвторы
Кондырев Дмитрий Олегович | Новосибирский государственный университет ; Лаборатория криптографии JetBrains Research; Институт математики им. С. Л. Соболева СО РАН | аспирант факультета информационных технологий; исследователь; младший научный сотрудник | dkondyrev@gmail.com |
Всего: 1
Ссылки
Hardwick F. S., Akram R. N., and Markantonakis K. Fair and transparent blockchain based tendering framework - A step towards open governance // IEEE Intern. Conf. TrustCom/BigDataSE, New York, USA, 2018. P. 1342-1347.
Ben-Sasson E., Chiesa A., Genkin D., et al. SNARKs for C: Verifying program executions succinctly and in zero knowledge // CRYPTO'2013. LNCS. 2013. V.8043. P. 90-108.
https://github.com/scipr-lab/libsnark - libsnark: a C++ library for zkSNARK proofs.
Метод сокрытия приватных данных для блокчейн-системы проведения тендеров | Прикладная дискретная математика. Приложение. 2020. № 13. DOI: 10.17223/2226308X/13/26