Приветствуем! Впервые на сайте Zcash?
Сеть Zcash пока еще молода, но быстро растет! Регистрируйтесь на сайте, чтобы получить больше информацией о том, как начать пользоваться Zcash!

Язык

Еще раз о Pay-to-sudoku

Sean Bowe | Jun 08, 2017

В прошлом году я создал проект под названием pay-to-sudoku, который стал первым в мире, где было применено нулевое разглашение платежей (ZKCP). Протокол с нулевым разглашением, разработанный Грегори Максвелом в 2011 году, является умным криптографическим инструментом, который позволяет людям торговать информацией и другими ценностями автоматически с помощью блокчейна. А на конференции Financial Cryptography 2016 Грегори любезно согласился помочь мне с демонстрацией!

В pay-to-sudoku одна сторона ("покупатель") может заплатить другой ("продавцу") за решение головоломки судоку: продавец находит решение и зашифровывает его ключом, который после хешируется. Используя доказательства с нулевым разглашением - в данном случае zk-SNARK с использованием libsnark - продавец выстраивает доказательство того, что у него есть зашифрованное решение головоломки, и что его можно расшифровать при наличии хеш-функции SHA256.

Покупатель переходит к отправке платежа в блокчейн, что позволяет продавцу получить некоторые средства в обмен на раскрытие SHA256 (ключа). После этого покупатель сможет снять шифр.

Чтобы сделать то же самое с zk-SNARK, покупатель должен взять ответственность за общую случайную строку (common reference string или CRS), что позволит продавцу выстроить доказательство. Кампанелли, Дженнаро, Голдфедер и Низзардо опубликовали новую научную работу, которая показывает слабое место способа, которым pay-to-sudoku использует конструкцию PGHR, примененную в libsnark. В частности предполагается, что CRS имеет правильную алгебраическую структуру, что позволяет покупателю нарушить нулевое знание, чтобы получить решение, не заплатив за него.

Следует отметить, что открытые параметры Zcash не являются уязвимыми к подобному злонамеренному использованию благодаря протоколу конфиденциального вычисления, который обеспечивает корректность CRS, даже если все участники вычисления поведут себя нечестно. Этот факт также удостоен внимания в научной работе.

Существуют некоторые меры, которые могут быть предприняты при использовании сторонних CRS. Как и в случае с открытыми параметрами Zcash достаточно обеспечить верное построение параметров с использованием протокола конфиденциального вычисления. Для защиты от некоторых атак, описанных в работе, достаточно не допускать неверной структуры CRS. В качестве дополнительной меры предосторожности проверьте доказательство после его создания!

В работе также описаны некоторые интересные идеи. Например, расширение концепции ZKCP на покупку не только цифровых товаров, но цифровых услуг (таких как, решение sudoku).

ZKCP, cryptography, zkSNARKs | Просмотреть все тэги