早期的零知识证明验证系统曾经是交互式的。为了成功执行操作,称为“见证人”和“验证者”的信息的“提供者”必须同时在线。
这使整个过程变得模棱两可且不可扩展。 1986年,菲亚特(Fiat)和沙米尔(Shamir)发明了菲亚特-沙米尔(Fiat-Shamir)启发式技术,并将交互式零知识证明更改为非交互式零知识证明。
菲亚特-沙米尔(Fiat–Shamir)启发式技术是一种获取知识的交互式证明并基于该信息创建数字签名的技术。这样,“见证人”或事实就可以公开验证,而无需证明者始终在线。
具有离散算法的非交互式零知识证明:
- Sanchita希望向Sachin证明她知道以y = g ^ a为底数g的值。
- Sanchita从值Z的集合中选取随机值v,然后计算t = g ^ v。
- Sanchita计算c = H(g,y,t),其中H()是哈希函数。
- Sanchita计算d = v – c * a。
- 然后Sachin或任何人都可以检查t = g ^ d * y ^ c。
Fiat-Shamir启发式算法使我们可以用非交互式随机oracle访问替换交互式步骤3,但实际上,使用了哈希函数。
在Interactive ZKP中,Sachin将从集合Z中选取随机值c并将其发送给Sanchita。
如果下面使用的哈希值不取决于y的(公共)值,则方案的安全性将受到削弱,因为恶意证明者然后可以选择某个值x从而使乘积c * a已知。
好处 :
- 可扩展–
它不需要证明者或验证者一直在线。 - 可运输–
如果证明者一次证明了证人的证据,则可以将其公开,并且对于不同的验证者,不再重复相同的过程。
应用范围:
- 区块链–
即使发件人,收件人和交易的信息仍然是匿名的,它也可用于验证公共区块链中的交易。 - 其他协议的基础–
在2017年发布了Bulletproofs。 Zk-SNARK也是非交互式ZKP的后续行动。