Blockchain的鱼和熊掌系列(12)Zero-Knowledge Proof

The zero-knowledge proof was introduced by Goldwasser, Micali and Rackoff in paper [1], of which they considered a setting where a powerful prover is proving a theorem to a probabilistic polynomial time verifier. In other words, a proof system can be considered zero-knowledge if the verifier can verify while the prover can prove by itself without going through the traditional protocols.

Q1: 请把问题背景用大白话讲清楚?
好的,Blockchain中虚拟电子货币本质上是内存中的一串二进制数,显示屏上的是一串十六进制数,信息安全上是一个私钥,换句话说,你拥有了某电子虚拟货币就是说你拥有了它的私钥。引入电子智能合约之后,问题就出现了:你是把电子货币附加到智能合约了,但怎么证明你是虚拟货币的拥有者呢?要知道:把公钥放上去,没法证明啥;把私钥放上去,相当于你就自愿丢弃该货币的拥有权了。怎么办?

Blockchain的鱼和熊掌系列(12)Zero-Knowledge Proof_第1张图片

一种解决办法:我们可以引入一个机制,然后通过把货币的公钥放上去,你就可以向任何平台证明这个电子货币的主人就是你。这个机制的名字就是 zero-knowledge proof.

Q2: The zero-knowledge (ZK) proof 是什么鬼?
假设A为货币的主人,电子货币的私钥为Pr,电子货币的公钥为Pu;虚拟操作平台为B,比如blockchain。现在:A拥有私钥Pr,B拥有公钥Pu,然后A要向B证明A拥有Pr,又不能直接把Pr给任何人看,怎么办?
一种办法如下:基于公钥体制原理,首先B发给A一个随机数Nonce1,然后A用Pu加密后,把密文发给B,接着,B用Pu解密该密文,验证解密后的明文是否为Nonce1,若是,则初步猜测验证A拥有Pr,反之否定……,这样交互多次之后,如果结果全为肯定,则B就可以以较高的概率证明A拥有Pr,即A是该货币的主人。

Q3:整个过程怎么体现 “zero knowledge”?
A,B双方所有的交流数据全部是没有意义的随机数(Nonce1,2,3,……),双方均不存在任何真实身份信息的传输问题!也就是传输的内容没有一点有意义的信息。这样经过若干次限时快速(具体视该数学难题的空间时间复杂性而定)交互之后,A就能被高概率地证明身份——这整个机制的基础是基于数学离散对数分解复杂性而构建的。

欢迎关注“Aha实验室”微信公众号

Reference
[1] Goldwasser S, Micali S, Rackoff C. The knowledge complexity of interactive proof systems[J]. SIAM Journal on computing, 1989, 18(1): 186-208.
[2] Kosba A, Miller A, Shi E, et al. Hawk: The blockchain model of cryptography and privacy-preserving smart contracts[C]//Security and Privacy (SP), 2016 IEEE Symposium on. IEEE, 2016: 839-858.

你可能感兴趣的:(区块链原理和应用)