零知识证明能在证明者不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。
也就是说,我们可以在不暴露任何隐私的情况下达成我们的目的。比如说,我要向警察叔叔证明我有能力开车,我不用拿出我的驾照,因为驾照上有我的隐私信息,我的照片、年龄、身份证号、驾照办理日期、有效期,这些信息其实与我有没有能力开车没有关系。在区块链中,通过全网验证,只需输出一个令人信服的结果,即“我有能力开车”,而无需泄露任何隐私信息。
那么,如果我需要授权某人获取我的某些信息呢?该如何处理?如何在既保护我的隐私不被其他未授权的人获取的前提下,点对点地提供给授权的人呢?而且授权的人只能看到我允许他看到的信息范围。
这里就要提到两种加密算法:对称加密算法和非对称加密算法。
对称加密算法是在加密和解密时使用的是同一个密钥。
非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(简称公钥)和私有密钥(简称私钥)。
同一组公钥与私钥是天生一对,若用公钥对数据进行加密,只有用对应的私钥才能解密。反之,若用私钥对数据进行加密,那只有用对应的公钥才能解密。
就如同字面意思一样,由于加密与解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
举个例子,B要向A传递一条秘密信息。
A的手里有一把私钥一把公钥。
于是:
A把公钥给了B。
得到A的公钥的B使用这个公钥对机密信息进行了加密,然后再发送给A。
A再用他自己手中保存的另一把私钥对加密以后的信息进行解密。这其中,A只能用他的私钥进行解密(由对应公钥加密的信息)。
这样一来,在信息的传输过程中,即使信息被人拦截,并且他得到了A的公钥,也无法将其,因为公钥和私钥是一对的,由A的公钥加密的信息,只有用A的私钥才能解密。
反过来,如果A要回复机密信息给B,那么需要B先公布B的公钥给A用于加密,A用B的公钥对机密信息进行加密,而B用自己保存的私钥解密。
显然,我们可以看出,非对称加密与对称加密相比,安全性更好。
非对称加密的缺点是加密和解密花费时间长、速度略慢。
在数字货币的交易中,可以通过私钥来对文本进行签名。同时向全网广播你的公钥。而别人拿到了你的公钥就可以对文本的签名进行解密,若可以解密,即认证你拥有私钥。这样就能证明你拥有存款。这也是比特币的加密算法之一。
喜欢作者,欢迎来撩,我们是一群痴迷于区块链的怪大叔。
文| 怪大叔(个人微信:xuemei_prince)
微信公众号:怪大叔尬聊区块链