Это доказательство членства в наборе используется в P2P-сетях, когда одна сторона обладает приватным значением, а другая — набором. Им придется передавать некоторые данные, связанные со значением и набором, через сеть, и любая третья сторона сможет подтвердить, что значение принадлежит набору. Ни одна из сторон не должна иметь возможности получить набор или значение из широковещательных данных.
Использование хеш-функций было моей первой попыткой, но обратное проектирование хэшей делает его небезопасным. Кроме того, хеширование каждого значения в M и его широковещательная передача по сети требует чрезвычайно большой пропускной способности для всех сторон в сети, особенно когда M велико.
Как можно сформулировать zk-доказательство, соответствующее вышеизложенному, которое можно использовать даже на клиенте с низкой пропускной способностью, но при этом обеспечить безопасность, как описано выше?
РЕДАКТИРОВАТЬ: Я, возможно, не ясно выразился. Математически это выглядит так:
есть ценность $м$, набор $ млн $ плюс гипотетическая функция $f$, который работает следующим образом: $f(м) = Q$ и $f(M) = Z$ плюс, есть еще один вероятно использованный номер $к$. Если и только если $ м M$, $Q$ и $Z$ имеет определенное математическое соотношение, такое как $Q ¡ Z (mod k)$, или же $ Q = Z $. Достижение равенства — наилучший сценарий, поскольку нет возможности ложных срабатываний или отрицательных результатов, но, возможно, это невозможно.