Рейтинг:1

Как я могу доказать, что прообраз хеша, содержащего число, больше x?

флаг ht

Итак, я хочу создать систему доказательства с нулевым разглашением для чисел (подумайте о кредитах и ​​банковских счетах, я хочу доказать, что моя зарплата превышает x долларов в месяц).

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

Но это также не очень полезно, так как я не хочу раскрывать хэш своей зарплаты, потому что несложно хешировать все возможные суммы (скажем, 500,00-5000,00, это всего 450 тысяч вариантов) и проверить, равны ли они.

Итак, я подумал о том, чтобы добавить случайную строку к сумме и хешировать ее. Есть ли способ доказать, что хэш строки, содержащей число, больше некоторой суммы? Или я неправильно об этом думаю?

Sam Jaques avatar
флаг us
Вы смотрели доказательства диапазона: https://arxiv.org/abs/1907.06381?
knaccc avatar
флаг es
Мой ответ здесь https://crypto.stackexchange.com/questions/96232/zkp-prove-that-18-while-hiding-age/97836#97836 показывает, как использовать обязательство Педерсена вместо хэша и как создать доказательство диапазона на основе подписи Шнорра, которое доказывает, что обязательство больше или равно определенному значению
Рейтинг:-1
флаг kr

Одним из критериев хорошей хеш-функции является то, что она не раскрывает никакой информации о прообразе. Вот почему ответ таков: нет, для хорошей хэш-функции ничего нельзя сказать о прообразе.

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

  1. Используйте хеш, чтобы проверить, больше ли хэшированное число, чем 1 000 000.
  2. Если не больше, возьмите медиану, 500 000. Используйте хеш, чтобы проверить, что хешированное число больше 500 000.
  3. Если больше, берем медиану из верхней половины, 750 000. Если не больше, берем медиану из нижней половины, 250 000. И т.д. Для 1 000 000 вы получите хешированное число всего за 20 шагов с точностью +-1. Если вы сделаете еще 7 шагов, вы узнаете число с точностью до 0,01.
флаг ht
Хорошо, но я хочу, чтобы кто-то доказал кому-то другому, что его зарплата больше, чем какая-то ценность. Они могут взять свои знания о том, что находится в хэше, и использовать это для создания доказательства. Эти доказательства не будут генерироваться автоматически, пользователь должен подписать их значением, которое только он знает, в хэше. Что я должен использовать для этого приложения?
Manish Adhikari avatar
флаг us
Этот ответ неверен. @vrwim Да, вы правы, это можно сделать. Должна быть возможность создать доказательство с нулевым разглашением того, что некоторое закодированное там значение v больше, чем x для некоторого известного x, не раскрывая ничего другого об x. Вы не можете выполнить двоичный поиск значения только с этой информацией, потому что кто-то другой не может проверить, больше ли оно, чем какое-либо другое значение y, или нет, если только доказывающая сторона не решит доказать это. Проблема, очевидно, в NP, и каждая проблема в NP имеет доказательство с нулевым знанием.
Manish Adhikari avatar
флаг us
Лучшее, что я знаю для таких доказательств, это ZK SNARK по логической схеме для вычисления хэша. Это очень хорошо для проверки (доказательство короткое и имеет сублинейное время проверки по отношению к размеру свидетеля). Генерация доказательства занимает некоторое время из-за необходимости компилировать хэш-программу и некоторые операции с эллиптическими кривыми.
kelalaka avatar
флаг in
См. https://www.wisdom.weizmann.ac.il/~oded/gmw1.html.
флаг kr
@Manish Adhikari: Ваш комментарий неверен. Я думаю, вы не поняли вопроса. Вопрос **не** в том, возможно ли доказательство ZP. Вопрос в том, можно ли использовать для доказательства ZK **статический** хэш, рассчитанный проверяющим **заранее** (без какого-либо взаимодействия с верификатором). Это невозможно по причине, которую я описал в ответе.
Manish Adhikari avatar
флаг us
Хорошо, но я все еще не понимаю, как сформулирован вопрос, чтобы он означал то, что вы говорите. Однако я признаю, что есть моменты, которые я не понимаю, например, как работодатель входит в уравнение.
флаг kr
@ManishAdhikari: ОП ищет способ каким-то образом вычислить ** один ** хэш и сделать это ** заранее **. ZK доказательство не работает таким образом.

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

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