Рейтинг:3

Существует ли доказательство с нулевым разглашением хешированного секрета?

флаг kp

Алиса хочет поделиться секретом $S$ с Бобом, поэтому она шифрует его закрытым ключом Боба.

Боб сейчас не в сети, поэтому Виктор тем временем позаботится о его безопасности.

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

Алиса делает это

зашифрованный секрет = зашифровать (секрет, bobsPublicKey)

Виктор делает это

Verify(encryptedSecret, hashOfSecret) => true
проверить("что-нибудь еще", hashOfSecret) => false

Разве такое проверять функция существует?

knaccc avatar
флаг es
Должен ли это быть хэш, или это может быть другой вид обязательства?
david_adler avatar
флаг kp
это может быть другое обязательство, при условии, что Виктор никогда не сможет раскрыть секрет
knaccc avatar
флаг es
Таким образом, можно упростить ваш вопрос следующим образом: если Виктор знает о приверженности секрету, как Алиса может неинтерактивно предоставить этот секрет Бобу через Виктора, включая доказательство Виктору, что секрет был предоставлен без того, чтобы Виктор мог узнать секрет? секрет? Пожалуйста, также укажите, кто должен быть тем, кто обеспечивает обязательство, так как это имеет значение для ответа.
david_adler avatar
флаг kp
Алиса должна предоставить обязательство, так как Боб не в сети
knaccc avatar
флаг es
Но тогда как Виктор узнает, что обязательство (будь то хэш или что-то другое) является обязательством правильного секрета? Алиса может дать обязательство по другому секрету и предоставить доказательство того, что другой секрет был передан Бобу. Виктор понятия не имел, был ли предоставлен правильный секрет.
david_adler avatar
флаг kp
Да, именно поэтому я указал, что вам не нужно беспокоиться о том, что «детали того, как он может полагаться на хеш, здесь не имеют значения». Это специфично для моего приложения, но в основном, если между Алисой и Бобом был распространен поддельный секрет, это не имеет значения. Секрет не активен, пока он не будет успешно передан хотя бы одному другому пользователю. Вред заключается в том, что в дело вмешиваются Чарли или кто-то другой, и они начинают распространять фиктивные секреты за живые секреты.
knaccc avatar
флаг es
Можно ли упростить ваш вопрос: как Алиса может зашифровать секрет так, чтобы только Боб мог его расшифровать, таким образом, чтобы, если тот же секрет был повторно зашифрован и передан Бобом Чарли, Боб мог продемонстрировать Виктору, что тот же секрет первоначально полученное от Алисы, теперь отправляется Чарли? Секрет только когда-либо перешифровывается для передачи кому-либо еще человеком, который знает секрет?
david_adler avatar
флаг kp
Да, это гораздо лучший способ выразить это. Вы все поняли, спасибо. Хотя не уверен, как лучше переформулировать вопрос...
knaccc avatar
флаг es
Когда Алиса передает секрет или когда Боб повторно передает секрет, имеет ли значение, искажают ли Алиса или Боб передачу так, чтобы она выглядела хорошо для Виктора, но тогда только получатель может обнаружить, что это плохо сформированная передача, которая должна быть отклоненный? Или повторная передача должна доказать, что получатель определенно сможет успешно ее декодировать?
david_adler avatar
флаг kp
«Является ли секрет только перешифрованным для передачи кому-либо еще человеком, который знает секрет?» да
david_adler avatar
флаг kp
не уверен, что понимаю ваш последний набор вопросов. Я думаю, что это может работать только так: если первая передача между Алисой и Бобом повреждена, все будущие передачи также должны соответствовать поврежденному секрету.
david_adler avatar
флаг kp
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/132390/discussion-between-david-adler-and-knaccc).
Рейтинг:0
флаг in

Частная проверка решения судоку, разговор Боу-Максвелла и транзакция биткойнов на семинаре Financial Crypto 2016.

Проблема, решенная с проверкой, была:

  1. покупатель не хочет отправлять свои монеты первым, рискуя получить случайные биты;
  2. продавец не хочет отправлять свое решение головоломки первым, рискуя не получить вознаграждение.

Было введено и реализовано неинтерактивное доказательство, чтобы убедиться, что:

  1. открытый текст является действительным решением судоку для поставленной головоломки;
  2. зашифрованный текст создавался с помощью ключа;
  3. ключ представляет собой прообраз хеш-значения, которое было отправлено покупателю вместе с зашифрованным текстом.

Этот хэш можно использовать для создания HTLC-транзакции, чтобы продавец мог требовать свои монеты, только опубликовав ключ в блокчейне. На самом деле был использован скрипт, но для упрощения остановимся на HTLC.

Краткий практический ответ: можно проверить прообраз хэша с помощью доказательства zkSNARK. Другой (общий) ответ: интерактивная система проверки существует для любого языка NP.

Наглая реклама: была разработана альтернативная схема проверки решения судоку, начиная с представления полиномиального набора и решения «игральные карты» Наора, представленного на IEEE ATIT 2019.

https://github.com/vadym-f/Sudoku_solvability_proof/tree/master/IEEE_ATIT_2019

david_adler avatar
флаг kp
Эй, спасибо! Звучит многообещающе, но не уверен, насколько уместно судоку для моей проблемы. Не могли бы вы немного подробнее рассказать о том, как zkSNARK можно применить к моей проблеме, например, с точки зрения Алисы и Боба, спасибо.
Vadym Fedyukovych avatar
флаг in
Транзакция HTLC и снарк-доказательство правильного хеширования секрета кажутся актуальными.
Рейтинг:0
флаг nl

Существует ZK-STARK, который доказывает, что вы знаете прообраз значения. «Утверждение Rescue-Hash, подтвержденное проверкой, приведенной в этом коде, таково:

«Я знаю последовательность из n + 1 входов {w_i} такую, что H(...H(H(w_0, w_1), w_2) ..., w_n) = p»

куда:

H — спасательная хэш-функция.
Каждый w_i представляет собой набор из 4 элементов поля. Это частные входные данные, известные только доказывающему.
p — общедоступный вывод хэша (который также состоит из 4 элементов поля).

" https://github.com/starkware-libs/ethSTARK/дерево/зигги

david_adler avatar
флаг kp
это звучит очень многообещающе, но немного выше моего понимания, не могли бы вы объяснить мне, как будто мне 5 лет? Я не понимаю, что такое «входы», и я не понимаю, что такое P. Что касается Алисы, Боба и т. д., как это работает?
Mark avatar
флаг ng
Хотя это немного поздно, ключ к результату этой формы заключается в том, что конкретный используемый хеш (Rescue) является «продвинутым криптографическим», то есть имеет «низкую мультипликативную сложность» по некоторой метрике и, следовательно, подходит для использования с продвинутой криптографией. примитивы (такие как MPC, FHE или ZKProofs — все они имеют немного разные показатели стоимости, но, грубо говоря, имеют «дешевое сложение» и «дорогое умножение»). Если сам хэш выражается как схема с относительно низкой (мультипликативной) глубиной, вы можете надеяться получить ZK-доказательство прообраза хэша «напрямую», например. относиться к этому как...
Mark avatar
флаг ng
общее утверждение, которое вы хотите доказать, и используя для этого готовые методы. Обратите внимание, что этот общий метод будет работать намного хуже с другими хеш-функциями, которые не являются «продвинутыми криптографическими», скажем, вариантами SHA (или действительно «большинством» хэш-функций, не предназначенных для этой конкретной цели).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.