Hash
Zk 證明證明我知道 y = HASH(x) 的秘密 x
可以說我知道一個秘密值
x
。x 的雜湊
y = H(x)
是公開的。有沒有什麼
zk way
可以向驗證者證明我知道x
而不透露x
和只透露y
?
有許多協議可以做到這一點。我列出了一些不需要計算假設(如配對或 DH),因為我更熟悉這些。它們基於 Head 中的 MPC 或 Reed-Solomon IOP。
- 利格羅https://acmccs.github.io/papers/p2087-amesA.pdf
- Ligero++ https://dl.acm.org/doi/pdf/10.1145/3372297.3417893
- 極光https://eprint.iacr.org/2018/828.pdf
- 凌波https://eprint.iacr.org/2021/215
前三個在電路大小上具有亞線性證明大小,但可能需要更長的證明時間。最後一個(Limbo)具有快速的證明時間但線性證明大小。Limbo 的摘要讓您感受到它對 SHA-256 的效率:
新系統在 53 毫秒內為 16 個 MPC 方創建 43KB 的 SHA-256 前映像的證明,或在 188 毫秒內為 128 方創建 23KB 的前映像證明。
如果您想使用計算假設,還有更有效的協議,例如防彈協議(https://eprint.iacr.org/2017/1066.pdf)。