Позвольте мне сначала представить контекст: допустим, у нас есть оценка хеш-функции: $$ч = Н(х, у),$$ куда $х$ и $у$ являются общедоступными и частными входными данными хеш-функции $Ч$, соответственно.
Затем, если я хочу доказать кому-то, что это вычисление было выполнено правильно, фактически не раскрывая $х$, то я должен создать доказательство знаний с нулевым разглашением $\пи$ (которые можно было получить через ZKPoK общего назначения, такие как SNARKS, STARKS, ...) $х$ такой, что $ч = Н(х, у)$.
До этого момента все в порядке.
Что, если я хочу, чтобы кто-то еще проверил оценку хэша, не раскрывая приватный ввод? $х$, не проходящий через ЗКПоК общего назначения; и важнее: сохранение некоторой хеш-функции характеристики такие как детерминизм, единообразие и универсальность?
Моя первая идея решить этот вопрос - найти функцию $f$ так что:
- $ф(х)$ могут быть обнародованы (чтобы любой мог легко проверить вычисление $H(f(x),y)$).
- $ф(х)$ также удовлетворяет детерминизму, единообразию и универсальности.
В самом деле, если такая функция $f$ существуют, то я мог бы просто заменить $Ч$ с $f$. Предположим, что я пытаюсь найти какое-то вычисление, которое разделяет некоторые свойства, которыми обладают хэш-функции, но гораздо более эффективно (т. е. без необходимости общих доказательств цели) проверяемо.
Вторая идея состоит в том, чтобы заменить механизм хеширования чем-то другим (например, шифрованием, связанным с подписью...), которое можно было бы эффективно проверить, сохраняя при этом упомянутые свойства.